import json
import os
import re
import requests
from bs4 import BeautifulSoup


def fetch_and_parse(url):
    session = requests.Session()
    session.trust_env = False  # 不读取系统代理设置

    # 请求网页
    response = session.get(url)
    # 设置网页编码格式
    response.encoding = 'utf-8'
    # 解析网页内容
    soup = BeautifulSoup(response.text, 'html.parser')
    # 提取正文内容
    content = soup.find_all('p')
    # 初始化存储数据
    data = []
    # 提取文本并格式化
    for para in content:
        text = para.get_text(strip=True)
        if text:  # 只处理非空文本
            # 根据需求格式化内容
            data.append(text)
    # 将data列表转换为字符串
    data_str = '\n'.join(data)
    return data_str


def extract_law_articles(data_str):
    # 正则表达式，匹配每个条款号及其内容
    pattern = re.compile(r'第([一二三四五六七八九十零百]+)条.*?(?=\n第|$)', re.DOTALL)
    # 初始化字典来存储条款号和内容
    lawarticles = {}
    # 搜索所有匹配项
    for match in pattern.finditer(data_str):
        articlenumber = match.group(1)
        articlecontent = match.group(0).replace('第' + articlenumber + '条', '').strip()
        lawarticles[f"中华人民共和国劳动合同法 第{articlenumber}条"] = articlecontent

    # 直接返回字典，不要转换为JSON字符串
    return lawarticles  # 移除了 json.dumps 这行


def save_to_json(data, file_path):
    # 确保目录存在
    directory = os.path.dirname(file_path)
    if directory and not os.path.exists(directory):
        os.makedirs(directory)

    # 保存数据到JSON文件
    with open(file_path, 'w', encoding='utf-8') as f:
        json.dump(data, f, ensure_ascii=False, indent=4)

    print(f"数据已保存到: {file_path}")


if __name__ == '__main__':
    # 请求页面
    url = "https://www.gov.cn/zhengce/zhengceku/2008-09/19/content_6630.htm"
    data_str = fetch_and_parse(url)
    lawarticles = extract_law_articles(data_str)  # 现在返回的是字典

    # 保存到文件
    file_path = "./law_data/ldf.json"
    save_to_json(lawarticles, file_path)

    # 同时打印部分结果确认
    print(f"成功提取了 {len(lawarticles)} 条法律条款")
    print("前3条条款示例:")
    for i, (key, value) in enumerate(list(lawarticles.items())[:3]):
        print(f"{key}: {value[:50]}...")